<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::PCA&lt; PointT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1_p_c_a.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pub-attribs">Public 属性</a> &#124;
<a href="#pri-methods">Private 成员函数</a> &#124;
<a href="#pri-attribs">Private 属性</a> &#124;
<a href="classpcl_1_1_p_c_a-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::PCA&lt; PointT &gt; 模板类 参考<div class="ingroups"><a class="el" href="group__common.html">Common components</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="pca_8h_source.html">pca.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::PCA&lt; PointT &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1_p_c_a.png" usemap="#pcl::PCA_3C_20PointT_20_3E_map" alt=""/>
  <map id="pcl::PCA_3C_20PointT_20_3E_map" name="pcl::PCA_3C_20PointT_20_3E_map">
<area href="classpcl_1_1_p_c_l_base.html" title="PCL base class. Implements methods that are used by most PCL algorithms." alt="pcl::PCLBase&lt; PointT &gt;" shape="rect" coords="0,0,146,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:a1bd3197d4c429c7cba4adea98602c66c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#a1bd3197d4c429c7cba4adea98602c66c">FLAG</a> { <a class="el" href="classpcl_1_1_p_c_a.html#a1bd3197d4c429c7cba4adea98602c66ca8cd62ecad342aa4f3b6c52e8cf008bed">increase</a>
, <a class="el" href="classpcl_1_1_p_c_a.html#a1bd3197d4c429c7cba4adea98602c66ca1e6a3535f703ae9d2b1e689c290acd38">preserve</a>
 }</td></tr>
<tr class="separator:a1bd3197d4c429c7cba4adea98602c66c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8343facb4443a160527bb7abb579e392"><td class="memItemLeft" align="right" valign="top"><a id="a8343facb4443a160527bb7abb579e392"></a>
typedef <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Base</b></td></tr>
<tr class="separator:a8343facb4443a160527bb7abb579e392"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb507d108b229cf1ae5daf3637e9cf2f"><td class="memItemLeft" align="right" valign="top"><a id="aeb507d108b229cf1ae5daf3637e9cf2f"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">Base::PointCloud</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:aeb507d108b229cf1ae5daf3637e9cf2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cf9905d3b6a546001a5c13fc204cbf6"><td class="memItemLeft" align="right" valign="top"><a id="a9cf9905d3b6a546001a5c13fc204cbf6"></a>
typedef Base::PointCloudPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:a9cf9905d3b6a546001a5c13fc204cbf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad356f07d3fb3e3563f70cf1ef3b46e4d"><td class="memItemLeft" align="right" valign="top"><a id="ad356f07d3fb3e3563f70cf1ef3b46e4d"></a>
typedef Base::PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:ad356f07d3fb3e3563f70cf1ef3b46e4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a2e00295e833a6ea74f105d26df7f3c"><td class="memItemLeft" align="right" valign="top"><a id="a3a2e00295e833a6ea74f105d26df7f3c"></a>
typedef Base::PointIndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesPtr</b></td></tr>
<tr class="separator:a3a2e00295e833a6ea74f105d26df7f3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89d673753e30ca9a99092c23b5a6aba9"><td class="memItemLeft" align="right" valign="top"><a id="a89d673753e30ca9a99092c23b5a6aba9"></a>
typedef Base::PointIndicesConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesConstPtr</b></td></tr>
<tr class="separator:a89d673753e30ca9a99092c23b5a6aba9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae2f6f6863a73337858b7a7a054eaae4f"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ab84dd662cda89edb882fe5307b2136ea"></a>
typedef PointCloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ac8326513fad0680b6993e2f1a79a6af4"></a>
typedef PointCloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae51eae0c7b3e0b7178f4894dff90660a"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesPtr</b></td></tr>
<tr class="separator:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a51771056fb4ab8c448a11157acbe2ee0"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> const  &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesConstPtr</b></td></tr>
<tr class="separator:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:ab56671f77a7391de05435bb7a39c9458"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#ab56671f77a7391de05435bb7a39c9458">PCA</a> (bool basis_only=false)</td></tr>
<tr class="memdesc:ab56671f77a7391de05435bb7a39c9458"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default Constructor  <a href="classpcl_1_1_p_c_a.html#ab56671f77a7391de05435bb7a39c9458">更多...</a><br /></td></tr>
<tr class="separator:ab56671f77a7391de05435bb7a39c9458"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f56db5cbe6cc785fbad9ddff3703312"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classpcl_1_1_p_c_a.html">PCA</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#a2f56db5cbe6cc785fbad9ddff3703312">operator=</a> (<a class="el" href="classpcl_1_1_p_c_a.html">PCA</a> const &amp;pca)</td></tr>
<tr class="separator:a2f56db5cbe6cc785fbad9ddff3703312"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca4254c3969ff8cd2213d90cf30e95b3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#aca4254c3969ff8cd2213d90cf30e95b3">setInputCloud</a> (const PointCloudConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:aca4254c3969ff8cd2213d90cf30e95b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input dataset  <a href="classpcl_1_1_p_c_a.html#aca4254c3969ff8cd2213d90cf30e95b3">更多...</a><br /></td></tr>
<tr class="separator:aca4254c3969ff8cd2213d90cf30e95b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e82eaa51d7a49ce5f2ac7bed8b1be84"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#a6e82eaa51d7a49ce5f2ac7bed8b1be84">setIndices</a> (const IndicesPtr &amp;indices)</td></tr>
<tr class="memdesc:a6e82eaa51d7a49ce5f2ac7bed8b1be84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_a.html#a6e82eaa51d7a49ce5f2ac7bed8b1be84">更多...</a><br /></td></tr>
<tr class="separator:a6e82eaa51d7a49ce5f2ac7bed8b1be84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb2035721451625eb16df8887864c90e"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#acb2035721451625eb16df8887864c90e">setIndices</a> (const IndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:acb2035721451625eb16df8887864c90e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_a.html#acb2035721451625eb16df8887864c90e">更多...</a><br /></td></tr>
<tr class="separator:acb2035721451625eb16df8887864c90e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71f16847e70728414581f5ca11bc9a0f"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#a71f16847e70728414581f5ca11bc9a0f">setIndices</a> (const PointIndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:a71f16847e70728414581f5ca11bc9a0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_a.html#a71f16847e70728414581f5ca11bc9a0f">更多...</a><br /></td></tr>
<tr class="separator:a71f16847e70728414581f5ca11bc9a0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11e20c2e4a123230ab4796f6fda74289"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#a11e20c2e4a123230ab4796f6fda74289">setIndices</a> (size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols)</td></tr>
<tr class="memdesc:a11e20c2e4a123230ab4796f6fda74289"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the indices for the points laying within an interest region of the point cloud.  <a href="classpcl_1_1_p_c_a.html#a11e20c2e4a123230ab4796f6fda74289">更多...</a><br /></td></tr>
<tr class="separator:a11e20c2e4a123230ab4796f6fda74289"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1871f8848d52dacaa870223664c0219f"><td class="memItemLeft" align="right" valign="top">Eigen::Vector4f &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#a1871f8848d52dacaa870223664c0219f">getMean</a> ()</td></tr>
<tr class="memdesc:a1871f8848d52dacaa870223664c0219f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mean accessor  <a href="classpcl_1_1_p_c_a.html#a1871f8848d52dacaa870223664c0219f">更多...</a><br /></td></tr>
<tr class="separator:a1871f8848d52dacaa870223664c0219f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad77043ebdf4629fae8b280c7c4840519"><td class="memItemLeft" align="right" valign="top">Eigen::Matrix3f &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#ad77043ebdf4629fae8b280c7c4840519">getEigenVectors</a> ()</td></tr>
<tr class="separator:ad77043ebdf4629fae8b280c7c4840519"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30259b4feb05d2572be2686b05c733df"><td class="memItemLeft" align="right" valign="top">Eigen::Vector3f &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#a30259b4feb05d2572be2686b05c733df">getEigenValues</a> ()</td></tr>
<tr class="separator:a30259b4feb05d2572be2686b05c733df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab11ef9e3f214f7a5decf44f67fb8e127"><td class="memItemLeft" align="right" valign="top">Eigen::MatrixXf &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#ab11ef9e3f214f7a5decf44f67fb8e127">getCoefficients</a> ()</td></tr>
<tr class="separator:ab11ef9e3f214f7a5decf44f67fb8e127"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37bab033d160cd2bb6f884b6970ba6b8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#a37bab033d160cd2bb6f884b6970ba6b8">update</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;input, <a class="el" href="classpcl_1_1_p_c_a.html#a1bd3197d4c429c7cba4adea98602c66c">FLAG</a> flag=<a class="el" href="classpcl_1_1_p_c_a.html#a1bd3197d4c429c7cba4adea98602c66ca1e6a3535f703ae9d2b1e689c290acd38">preserve</a>)</td></tr>
<tr class="separator:a37bab033d160cd2bb6f884b6970ba6b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d9b2c0c5ae7555552c48465134cfcb3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#a2d9b2c0c5ae7555552c48465134cfcb3">project</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;input, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;projection)</td></tr>
<tr class="separator:a2d9b2c0c5ae7555552c48465134cfcb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d054b21391dacdedeb8a9a375d50e5a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#a5d054b21391dacdedeb8a9a375d50e5a">project</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;input, <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;projection)</td></tr>
<tr class="separator:a5d054b21391dacdedeb8a9a375d50e5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af478ebeb7cd64e513fd0168d583186c3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#af478ebeb7cd64e513fd0168d583186c3">reconstruct</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;projection, <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;input)</td></tr>
<tr class="separator:af478ebeb7cd64e513fd0168d583186c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf720ec4b22838f9045026ed304779df"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#aaf720ec4b22838f9045026ed304779df">reconstruct</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;projection, <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;input)</td></tr>
<tr class="separator:aaf720ec4b22838f9045026ed304779df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acceb20854934f4cf77e266eb5a44d4f0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ()</td></tr>
<tr class="memdesc:acceb20854934f4cf77e266eb5a44d4f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called before starting the actual computation.  <a href="classpcl_1_1_p_c_a.html#acceb20854934f4cf77e266eb5a44d4f0">更多...</a><br /></td></tr>
<tr class="separator:acceb20854934f4cf77e266eb5a44d4f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1952d7101f3942bac3b69ed55c1ca7ea"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#a1952d7101f3942bac3b69ed55c1ca7ea">setInputCloud</a> (const PointCloudConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:a1952d7101f3942bac3b69ed55c1ca7ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input dataset  <a href="classpcl_1_1_p_c_a.html#a1952d7101f3942bac3b69ed55c1ca7ea">更多...</a><br /></td></tr>
<tr class="separator:a1952d7101f3942bac3b69ed55c1ca7ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="af4fbc5eb005057f8a0fc6d60bde595df"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af4fbc5eb005057f8a0fc6d60bde595df">PCLBase</a> ()</td></tr>
<tr class="memdesc:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a7a6dd7a91275d7737cf1b18005b47244"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a7a6dd7a91275d7737cf1b18005b47244">PCLBase</a> (const <a class="el" href="classpcl_1_1_p_c_l_base.html">PCLBase</a> &amp;base)</td></tr>
<tr class="memdesc:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br /></td></tr>
<tr class="separator:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ad5d6846e98e59c37dcc3dc9958d53966"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ad5d6846e98e59c37dcc3dc9958d53966">~PCLBase</a> ()</td></tr>
<tr class="memdesc:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a8cd745c4f7a792212f4fc3720b9d46ea"></a>
PointCloudConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a8cd745c4f7a792212f4fc3720b9d46ea">getInputCloud</a> () const</td></tr>
<tr class="memdesc:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset. <br /></td></tr>
<tr class="separator:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a058753dd4de73d3d0062fe2e452fba3c"></a>
IndicesPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a058753dd4de73d3d0062fe2e452fba3c">getIndices</a> ()</td></tr>
<tr class="memdesc:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="acae187b37230758959572ceb1e6e2045"></a>
IndicesConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acae187b37230758959572ceb1e6e2045">getIndices</a> () const</td></tr>
<tr class="memdesc:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">operator[]</a> (size_t pos) const</td></tr>
<tr class="memdesc:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a> operator[] to shorten code  <a href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">更多...</a><br /></td></tr>
<tr class="separator:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
<tr class="memitem:a09c70d8e06e3fb4f07903fe6f8d67869"><td class="memItemLeft" align="right" valign="top"><a id="a09c70d8e06e3fb4f07903fe6f8d67869"></a>
PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a></td></tr>
<tr class="memdesc:a09c70d8e06e3fb4f07903fe6f8d67869"><td class="mdescLeft">&#160;</td><td class="mdescRight">The input point cloud dataset. <br /></td></tr>
<tr class="separator:a09c70d8e06e3fb4f07903fe6f8d67869"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaee847c8a517ebf365bad2cb182a6626"><td class="memItemLeft" align="right" valign="top"><a id="aaee847c8a517ebf365bad2cb182a6626"></a>
IndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_a.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a></td></tr>
<tr class="memdesc:aaee847c8a517ebf365bad2cb182a6626"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the vector of point indices to use. <br /></td></tr>
<tr class="separator:aaee847c8a517ebf365bad2cb182a6626"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private 成员函数</h2></td></tr>
<tr class="memitem:a6a1de653c2d1ea8228d551599af7c3a9"><td class="memItemLeft" align="right" valign="top"><a id="a6a1de653c2d1ea8228d551599af7c3a9"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>initCompute</b> ()</td></tr>
<tr class="separator:a6a1de653c2d1ea8228d551599af7c3a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private 属性</h2></td></tr>
<tr class="memitem:af8e01a2ba7a7f5e0c964c43dca7bb3d8"><td class="memItemLeft" align="right" valign="top"><a id="af8e01a2ba7a7f5e0c964c43dca7bb3d8"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>compute_done_</b></td></tr>
<tr class="separator:af8e01a2ba7a7f5e0c964c43dca7bb3d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1cfe9307abb7e2f8735449b77a226280"><td class="memItemLeft" align="right" valign="top"><a id="a1cfe9307abb7e2f8735449b77a226280"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>basis_only_</b></td></tr>
<tr class="separator:a1cfe9307abb7e2f8735449b77a226280"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17b7ea1fde58ce1c9f6924bdaf7aa30d"><td class="memItemLeft" align="right" valign="top"><a id="a17b7ea1fde58ce1c9f6924bdaf7aa30d"></a>
Eigen::Matrix3f&#160;</td><td class="memItemRight" valign="bottom"><b>eigenvectors_</b></td></tr>
<tr class="separator:a17b7ea1fde58ce1c9f6924bdaf7aa30d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a460d8de15cc76551626235b560314263"><td class="memItemLeft" align="right" valign="top"><a id="a460d8de15cc76551626235b560314263"></a>
Eigen::MatrixXf&#160;</td><td class="memItemRight" valign="bottom"><b>coefficients_</b></td></tr>
<tr class="separator:a460d8de15cc76551626235b560314263"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca9f2832ec7e680e0b722404232584df"><td class="memItemLeft" align="right" valign="top"><a id="aca9f2832ec7e680e0b722404232584df"></a>
Eigen::Vector4f&#160;</td><td class="memItemRight" valign="bottom"><b>mean_</b></td></tr>
<tr class="separator:aca9f2832ec7e680e0b722404232584df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7902c44393e57d92cabae6195c97d1a9"><td class="memItemLeft" align="right" valign="top"><a id="a7902c44393e57d92cabae6195c97d1a9"></a>
Eigen::Vector3f&#160;</td><td class="memItemRight" valign="bottom"><b>eigenvalues_</b></td></tr>
<tr class="separator:a7902c44393e57d92cabae6195c97d1a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
额外继承的成员函数</h2></td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ()</td></tr>
<tr class="memdesc:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called before starting the actual computation.  <a href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">更多...</a><br /></td></tr>
<tr class="separator:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="afc426c4eebb94b7734d4fa556bff1420"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ()</td></tr>
<tr class="memdesc:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called after finishing the actual computation. <br /></td></tr>
<tr class="separator:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a09c70d8e06e3fb4f07903fe6f8d67869"></a>
PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a></td></tr>
<tr class="memdesc:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">The input point cloud dataset. <br /></td></tr>
<tr class="separator:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="aaee847c8a517ebf365bad2cb182a6626"></a>
IndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a></td></tr>
<tr class="memdesc:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the vector of point indices to use. <br /></td></tr>
<tr class="separator:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ada1eadb824d34ca9206a86343d9760bb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ada1eadb824d34ca9206a86343d9760bb">use_indices_</a></td></tr>
<tr class="memdesc:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if point indices are used. <br /></td></tr>
<tr class="separator:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="adadb0299f144528020ed558af6879662"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#adadb0299f144528020ed558af6879662">fake_indices_</a></td></tr>
<tr class="memdesc:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">If no set of indices are given, we construct a set of fake indices that mimic the input <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a>. <br /></td></tr>
<tr class="separator:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename PointT&gt;<br />
class pcl::PCA&lt; PointT &gt;</h3>

<p>Principal Component analysis (<a class="el" href="classpcl_1_1_p_c_a.html">PCA</a>) class.<br  />
 Principal components are extracted by singular values decomposition on the covariance matrix of the centered input cloud. Available data after pca computation are the mean of the input data, the eigenvalues (in descending order) and corresponding eigenvectors.<br  />
Other methods allow projection in the eigenspace, reconstruction from eigenspace and update of the eigenspace with a new datum (according Matej Artec, Matjaz Jogan and Ales Leonardis: "Incremental PCA for On-line Visual Learning and Recognition").</p>
<dl class="section author"><dt>作者</dt><dd>Nizar Sallem </dd></dl>
</div><h2 class="groupheader">成员枚举类型说明</h2>
<a id="a1bd3197d4c429c7cba4adea98602c66c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1bd3197d4c429c7cba4adea98602c66c">&#9670;&nbsp;</a></span>FLAG</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classpcl_1_1_p_c_a.html#a1bd3197d4c429c7cba4adea98602c66c">pcl::PCA::FLAG</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Updating method flag </p>
<table class="fieldtable">
<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="a1bd3197d4c429c7cba4adea98602c66ca8cd62ecad342aa4f3b6c52e8cf008bed"></a>increase&#160;</td><td class="fielddoc"><p>keep the new basis vectors if possible </p>
</td></tr>
<tr><td class="fieldname"><a id="a1bd3197d4c429c7cba4adea98602c66ca1e6a3535f703ae9d2b1e689c290acd38"></a>preserve&#160;</td><td class="fielddoc"><p>preserve subspace dimension </p>
</td></tr>
</table>
<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;      {</div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;        <a class="code" href="classpcl_1_1_p_c_a.html#a1bd3197d4c429c7cba4adea98602c66ca8cd62ecad342aa4f3b6c52e8cf008bed">increase</a>, </div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        <a class="code" href="classpcl_1_1_p_c_a.html#a1bd3197d4c429c7cba4adea98602c66ca1e6a3535f703ae9d2b1e689c290acd38">preserve</a></div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;      };</div>
<div class="ttc" id="aclasspcl_1_1_p_c_a_html_a1bd3197d4c429c7cba4adea98602c66ca1e6a3535f703ae9d2b1e689c290acd38"><div class="ttname"><a href="classpcl_1_1_p_c_a.html#a1bd3197d4c429c7cba4adea98602c66ca1e6a3535f703ae9d2b1e689c290acd38">pcl::PCA::preserve</a></div><div class="ttdeci">@ preserve</div><div class="ttdef"><b>Definition:</b> pca.h:81</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_a_html_a1bd3197d4c429c7cba4adea98602c66ca8cd62ecad342aa4f3b6c52e8cf008bed"><div class="ttname"><a href="classpcl_1_1_p_c_a.html#a1bd3197d4c429c7cba4adea98602c66ca8cd62ecad342aa4f3b6c52e8cf008bed">pcl::PCA::increase</a></div><div class="ttdeci">@ increase</div><div class="ttdef"><b>Definition:</b> pca.h:79</div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">构造及析构函数说明</h2>
<a id="ab56671f77a7391de05435bb7a39c9458"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab56671f77a7391de05435bb7a39c9458">&#9670;&nbsp;</a></span>PCA()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::<a class="el" href="classpcl_1_1_p_c_a.html">PCA</a> </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>basis_only</em> = <code>false</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Default Constructor </p>
<p>Constructor with direct computation</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">basis_only</td><td>flag to compute only the <a class="el" href="classpcl_1_1_p_c_a.html">PCA</a> basis</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>input m*n matrix (ie n vectors of R(m)) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">basis_only</td><td>flag to compute only the <a class="el" href="classpcl_1_1_p_c_a.html">PCA</a> basis </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        : Base ()</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;        , compute_done_ (<span class="keyword">false</span>)</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        , basis_only_ (basis_only) </div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;        , eigenvectors_ ()</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        , coefficients_ ()</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        , mean_ ()</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        , eigenvalues_  ()</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      {}</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="ab11ef9e3f214f7a5decf44f67fb8e127"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab11ef9e3f214f7a5decf44f67fb8e127">&#9670;&nbsp;</a></span>getCoefficients()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Eigen::MatrixXf&amp; <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getCoefficients </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Coefficients accessor </p><dl class="exception"><dt>异常</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classpcl_1_1_init_failed_exception.html" title="An exception thrown when init can not be performed should be used in all the PCLBase class inheritant...">InitFailedException</a></td><td></td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;      {</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;        <span class="keywordflow">if</span> (!compute_done_)</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;          initCompute ();</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;        <span class="keywordflow">if</span> (!compute_done_)</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;          PCL_THROW_EXCEPTION (InitFailedException, </div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;                               <span class="stringliteral">&quot;[pcl::PCA::getEigenVectors] PCA getCoefficients failed&quot;</span>);</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        <span class="keywordflow">return</span> (coefficients_);</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a30259b4feb05d2572be2686b05c733df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a30259b4feb05d2572be2686b05c733df">&#9670;&nbsp;</a></span>getEigenValues()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Eigen::Vector3f&amp; <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getEigenValues </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Eigen Values accessor </p><dl class="exception"><dt>异常</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classpcl_1_1_init_failed_exception.html" title="An exception thrown when init can not be performed should be used in all the PCLBase class inheritant...">InitFailedException</a></td><td></td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;      {</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;        <span class="keywordflow">if</span> (!compute_done_)</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;          initCompute ();</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;        <span class="keywordflow">if</span> (!compute_done_)</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;          PCL_THROW_EXCEPTION (InitFailedException, </div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;                               <span class="stringliteral">&quot;[pcl::PCA::getEigenVectors] PCA getEigenValues failed&quot;</span>);</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        <span class="keywordflow">return</span> (eigenvalues_);</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ad77043ebdf4629fae8b280c7c4840519"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad77043ebdf4629fae8b280c7c4840519">&#9670;&nbsp;</a></span>getEigenVectors()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Eigen::Matrix3f&amp; <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getEigenVectors </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Eigen Vectors accessor </p><dl class="exception"><dt>异常</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classpcl_1_1_init_failed_exception.html" title="An exception thrown when init can not be performed should be used in all the PCLBase class inheritant...">InitFailedException</a></td><td></td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;      {</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        <span class="keywordflow">if</span> (!compute_done_)</div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;          initCompute ();</div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;        <span class="keywordflow">if</span> (!compute_done_)</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;          PCL_THROW_EXCEPTION (InitFailedException, </div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;                               <span class="stringliteral">&quot;[pcl::PCA::getEigenVectors] PCA initCompute failed&quot;</span>);</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;        <span class="keywordflow">return</span> (eigenvectors_);</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a1871f8848d52dacaa870223664c0219f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1871f8848d52dacaa870223664c0219f">&#9670;&nbsp;</a></span>getMean()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Eigen::Vector4f&amp; <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getMean </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Mean accessor </p>
<dl class="exception"><dt>异常</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classpcl_1_1_init_failed_exception.html" title="An exception thrown when init can not be performed should be used in all the PCLBase class inheritant...">InitFailedException</a></td><td></td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;      {</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        <span class="keywordflow">if</span> (!compute_done_)</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;          initCompute ();</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        <span class="keywordflow">if</span> (!compute_done_)</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;          PCL_THROW_EXCEPTION (InitFailedException, </div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;                               <span class="stringliteral">&quot;[pcl::PCA::getMean] PCA initCompute failed&quot;</span>);</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;        <span class="keywordflow">return</span> (mean_);</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="acceb20854934f4cf77e266eb5a44d4f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acceb20854934f4cf77e266eb5a44d4f0">&#9670;&nbsp;</a></span>initCompute()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::initCompute</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method should get called before starting the actual computation. </p>
<p>Internally, initCompute() does the following:</p><ul>
<li>checks if an input dataset is given, and returns false otherwise</li>
<li>checks whether a set of input indices has been given. Returns true if yes.</li>
<li>if no input indices have been given, a fake set is created, which will be used until:<ul>
<li>either a new set is given via <a class="el" href="classpcl_1_1_p_c_a.html#a6e82eaa51d7a49ce5f2ac7bed8b1be84" title="Provide a pointer to the vector of indices that represents the input data.">setIndices()</a>, or</li>
<li>a new cloud is given that has a different set of points. This will trigger an update on the set of fake indices </li>
</ul>
</li>
</ul>
<div class="fragment"><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;{</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="comment">// Check if input was set</span></div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_p_c_a.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>)</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160; </div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <span class="comment">// If no point indices have been given, construct a set of indices for the entire input point cloud</span></div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_p_c_a.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>)</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  {</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <a class="code" href="classpcl_1_1_p_c_l_base.html#adadb0299f144528020ed558af6879662">fake_indices_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    <a class="code" href="classpcl_1_1_p_c_a.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>.reset (<span class="keyword">new</span> std::vector&lt;int&gt;);</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    <span class="keywordflow">try</span></div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    {</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;      <a class="code" href="classpcl_1_1_p_c_a.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;resize (<a class="code" href="classpcl_1_1_p_c_a.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points.size ());</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    }</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::bad_alloc&amp;)</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    {</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      PCL_ERROR (<span class="stringliteral">&quot;[initCompute] Failed to allocate %lu indices.\n&quot;</span>, <a class="code" href="classpcl_1_1_p_c_a.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points.size ());</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    }</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="classpcl_1_1_p_c_a.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size (); ++i) { (*indices_)[i] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(i); }</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;  }</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160; </div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  <span class="comment">// If we have a set of fake indices, but they do not match the number of points in the cloud, update them</span></div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_p_c_l_base.html#adadb0299f144528020ed558af6879662">fake_indices_</a> &amp;&amp; <a class="code" href="classpcl_1_1_p_c_a.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size () != <a class="code" href="classpcl_1_1_p_c_a.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points.size ())</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  {</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    <span class="keywordtype">size_t</span> indices_size = <a class="code" href="classpcl_1_1_p_c_a.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ();</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    <a class="code" href="classpcl_1_1_p_c_a.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;resize (<a class="code" href="classpcl_1_1_p_c_a.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points.size ());</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = indices_size; i &lt; <a class="code" href="classpcl_1_1_p_c_a.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size (); ++i) { (*indices_)[i] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(i); }</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  }</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160; </div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <span class="keywordflow">return</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_p_c_a_html_a09c70d8e06e3fb4f07903fe6f8d67869"><div class="ttname"><a href="classpcl_1_1_p_c_a.html#a09c70d8e06e3fb4f07903fe6f8d67869">pcl::PCA::input_</a></div><div class="ttdeci">PointCloudConstPtr input_</div><div class="ttdoc">The input point cloud dataset.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:150</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_a_html_aaee847c8a517ebf365bad2cb182a6626"><div class="ttname"><a href="classpcl_1_1_p_c_a.html#aaee847c8a517ebf365bad2cb182a6626">pcl::PCA::indices_</a></div><div class="ttdeci">IndicesPtr indices_</div><div class="ttdoc">A pointer to the vector of point indices to use.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:153</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_adadb0299f144528020ed558af6879662"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#adadb0299f144528020ed558af6879662">pcl::PCLBase::fake_indices_</a></div><div class="ttdeci">bool fake_indices_</div><div class="ttdoc">If no set of indices are given, we construct a set of fake indices that mimic the input PointCloud.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:159</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2f56db5cbe6cc785fbad9ddff3703312"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f56db5cbe6cc785fbad9ddff3703312">&#9670;&nbsp;</a></span>operator=()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classpcl_1_1_p_c_a.html">PCA</a>&amp; <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::operator= </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_p_c_a.html">PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; const &amp;&#160;</td>
          <td class="paramname"><em>pca</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Assignment operator </p><dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">pca</td><td><a class="el" href="classpcl_1_1_p_c_a.html">PCA</a> object </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      {</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        eigenvectors_ = pca.eigenvectors_;</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;        coefficients_ = pca.coefficients_;</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;        eigenvalues_  = pca.eigenvalues_;</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        mean_         = pca.mean_;</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;        <span class="keywordflow">return</span> (*<span class="keyword">this</span>);</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a5d054b21391dacdedeb8a9a375d50e5a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5d054b21391dacdedeb8a9a375d50e5a">&#9670;&nbsp;</a></span>project() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::project </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;&#160;</td>
          <td class="paramname"><em>projection</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Project cloud on the eigenspace. </p><dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>cloud from original dataset </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">projection</td><td>the cloud in eigen vectors space </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>异常</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classpcl_1_1_init_failed_exception.html" title="An exception thrown when init can not be performed should be used in all the PCLBase class inheritant...">InitFailedException</a></td><td></td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;{</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;  <span class="keywordflow">if</span>(!compute_done_)</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    initCompute ();</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;  <span class="keywordflow">if</span> (!compute_done_)</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    PCL_THROW_EXCEPTION (InitFailedException, <span class="stringliteral">&quot;[pcl::PCA::project] PCA initCompute failed&quot;</span>);</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <span class="keywordflow">if</span> (input.is_dense)</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  {</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    projection.<a class="code" href="classpcl_1_1_point_cloud.html#a2d60b6927b31ef89cd3b97e8173ea4aa">resize</a> (input.size ());</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; input.size (); ++i)</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;      <a class="code" href="classpcl_1_1_p_c_a.html#a2d9b2c0c5ae7555552c48465134cfcb3">project</a> (input[i], projection[i]);</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  }</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;  {</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> p;</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; input.size (); ++i)</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    {</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;      <span class="keywordflow">if</span> (!pcl_isfinite (input[i].x) || </div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;          !pcl_isfinite (input[i].y) ||</div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;          !pcl_isfinite (input[i].z))</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;      <a class="code" href="classpcl_1_1_p_c_a.html#a2d9b2c0c5ae7555552c48465134cfcb3">project</a> (input[i], p);</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;      projection.<a class="code" href="classpcl_1_1_point_cloud.html#a0b4d7abee110e47d90635eb042488bb4">push_back</a> (p);</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    }</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  }</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_p_c_a_html_a2d9b2c0c5ae7555552c48465134cfcb3"><div class="ttname"><a href="classpcl_1_1_p_c_a.html#a2d9b2c0c5ae7555552c48465134cfcb3">pcl::PCA::project</a></div><div class="ttdeci">void project(const PointT &amp;input, PointT &amp;projection)</div><div class="ttdef"><b>Definition:</b> pca.hpp:175</div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_a0b4d7abee110e47d90635eb042488bb4"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#a0b4d7abee110e47d90635eb042488bb4">pcl::PointCloud::push_back</a></div><div class="ttdeci">void push_back(const PointT &amp;pt)</div><div class="ttdoc">Insert a new point in the cloud, at the end of the container.</div><div class="ttdef"><b>Definition:</b> point_cloud.h:480</div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_a2d60b6927b31ef89cd3b97e8173ea4aa"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#a2d60b6927b31ef89cd3b97e8173ea4aa">pcl::PointCloud::resize</a></div><div class="ttdeci">void resize(size_t n)</div><div class="ttdoc">Resize the cloud</div><div class="ttdef"><b>Definition:</b> point_cloud.h:455</div></div>
<div class="ttc" id="astructpcl_1_1_point_x_y_z_r_g_b_a_html"><div class="ttname"><a href="structpcl_1_1_point_x_y_z_r_g_b_a.html">pcl::PointXYZRGBA</a></div><div class="ttdoc">A point structure representing Euclidean xyz coordinates, and the RGBA color.</div><div class="ttdef"><b>Definition:</b> point_types.hpp:540</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2d9b2c0c5ae7555552c48465134cfcb3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d9b2c0c5ae7555552c48465134cfcb3">&#9670;&nbsp;</a></span>project() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::project </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>projection</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Project point on the eigenspace. </p><dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>point from original dataset </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">projection</td><td>the point in eigen vectors space </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>异常</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classpcl_1_1_init_failed_exception.html" title="An exception thrown when init can not be performed should be used in all the PCLBase class inheritant...">InitFailedException</a></td><td></td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;{</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  <span class="keywordflow">if</span>(!compute_done_)</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    initCompute ();</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  <span class="keywordflow">if</span> (!compute_done_)</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    PCL_THROW_EXCEPTION (InitFailedException, <span class="stringliteral">&quot;[pcl::PCA::project] PCA initCompute failed&quot;</span>);</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  </div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;  Eigen::Vector3f demean_input = input.getVector3fMap () - mean_.head&lt;3&gt; ();</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;  projection.getVector3fMap () = eigenvectors_.transpose() * demean_input;</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="aaf720ec4b22838f9045026ed304779df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf720ec4b22838f9045026ed304779df">&#9670;&nbsp;</a></span>reconstruct() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::reconstruct </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;&#160;</td>
          <td class="paramname"><em>projection</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;&#160;</td>
          <td class="paramname"><em>input</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Reconstruct cloud from its projection </p><dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">projection</td><td>cloud from eigenvector space </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">input</td><td>reconstructed cloud </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>异常</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classpcl_1_1_init_failed_exception.html" title="An exception thrown when init can not be performed should be used in all the PCLBase class inheritant...">InitFailedException</a></td><td></td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;{</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;  <span class="keywordflow">if</span>(!compute_done_)</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    initCompute ();</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;  <span class="keywordflow">if</span> (!compute_done_)</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    PCL_THROW_EXCEPTION (InitFailedException, <span class="stringliteral">&quot;[pcl::PCA::reconstruct] PCA initCompute failed&quot;</span>);</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  <span class="keywordflow">if</span> (input.is_dense)</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  {</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    input.resize (projection.size ());</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; projection.size (); ++i)</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;      <a class="code" href="classpcl_1_1_p_c_a.html#af478ebeb7cd64e513fd0168d583186c3">reconstruct</a> (projection[i], input[i]);</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  }</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  {</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> p;</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; input.size (); ++i)</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    {</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;      <span class="keywordflow">if</span> (!pcl_isfinite (input[i].x) || </div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;          !pcl_isfinite (input[i].y) ||</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;          !pcl_isfinite (input[i].z))</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;      <a class="code" href="classpcl_1_1_p_c_a.html#af478ebeb7cd64e513fd0168d583186c3">reconstruct</a> (projection[i], p);</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;      input.push_back (p);</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    }</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  }</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_p_c_a_html_af478ebeb7cd64e513fd0168d583186c3"><div class="ttname"><a href="classpcl_1_1_p_c_a.html#af478ebeb7cd64e513fd0168d583186c3">pcl::PCA::reconstruct</a></div><div class="ttdeci">void reconstruct(const PointT &amp;projection, PointT &amp;input)</div><div class="ttdef"><b>Definition:</b> pca.hpp:217</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af478ebeb7cd64e513fd0168d583186c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af478ebeb7cd64e513fd0168d583186c3">&#9670;&nbsp;</a></span>reconstruct() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::reconstruct </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>projection</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>input</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Reconstruct point from its projection </p><dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">projection</td><td>point from eigenvector space </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">input</td><td>reconstructed point </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>异常</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classpcl_1_1_init_failed_exception.html" title="An exception thrown when init can not be performed should be used in all the PCLBase class inheritant...">InitFailedException</a></td><td></td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;{</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;  <span class="keywordflow">if</span>(!compute_done_)</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    initCompute ();</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  <span class="keywordflow">if</span> (!compute_done_)</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    PCL_THROW_EXCEPTION (InitFailedException, <span class="stringliteral">&quot;[pcl::PCA::reconstruct] PCA initCompute failed&quot;</span>);</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160; </div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;  input.getVector3fMap ()= eigenvectors_ * projection.getVector3fMap ();</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;  input.getVector3fMap ()+= mean_.head&lt;3&gt; ();</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="acb2035721451625eb16df8887864c90e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acb2035721451625eb16df8887864c90e">&#9670;&nbsp;</a></span>setIndices() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setIndices </td>
          <td>(</td>
          <td class="paramtype">const IndicesConstPtr &amp;&#160;</td>
          <td class="paramname"><em>indices</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provide a pointer to the vector of indices that represents the input data. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>a pointer to the indices that represent the input data. </td></tr>
  </table>
  </dd>
</dl>

<p>重载 <a class="el" href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">pcl::PCLBase&lt; PointT &gt;</a> .</p>
<div class="fragment"><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      {</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        <a class="code" href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">Base::setIndices</a> (indices);</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;        compute_done_ = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_ab219359de6eb34c9d51e2e976dd1a0d1"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">pcl::PCLBase::setIndices</a></div><div class="ttdeci">virtual void setIndices(const IndicesPtr &amp;indices)</div><div class="ttdoc">Provide a pointer to the vector of indices that represents the input data.</div><div class="ttdef"><b>Definition:</b> pcl_base.hpp:73</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a6e82eaa51d7a49ce5f2ac7bed8b1be84"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e82eaa51d7a49ce5f2ac7bed8b1be84">&#9670;&nbsp;</a></span>setIndices() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setIndices </td>
          <td>(</td>
          <td class="paramtype">const IndicesPtr &amp;&#160;</td>
          <td class="paramname"><em>indices</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provide a pointer to the vector of indices that represents the input data. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>a pointer to the indices that represent the input data. </td></tr>
  </table>
  </dd>
</dl>

<p>重载 <a class="el" href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">pcl::PCLBase&lt; PointT &gt;</a> .</p>
<div class="fragment"><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      {</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        <a class="code" href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">Base::setIndices</a> (indices);</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        compute_done_ = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a71f16847e70728414581f5ca11bc9a0f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71f16847e70728414581f5ca11bc9a0f">&#9670;&nbsp;</a></span>setIndices() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setIndices </td>
          <td>(</td>
          <td class="paramtype">const PointIndicesConstPtr &amp;&#160;</td>
          <td class="paramname"><em>indices</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provide a pointer to the vector of indices that represents the input data. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>a pointer to the indices that represent the input data. </td></tr>
  </table>
  </dd>
</dl>

<p>重载 <a class="el" href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">pcl::PCLBase&lt; PointT &gt;</a> .</p>
<div class="fragment"><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;      {</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        <a class="code" href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">Base::setIndices</a> (indices);</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        compute_done_ = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a11e20c2e4a123230ab4796f6fda74289"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a11e20c2e4a123230ab4796f6fda74289">&#9670;&nbsp;</a></span>setIndices() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setIndices </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>row_start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>col_start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>nb_rows</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>nb_cols</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the indices for the points laying within an interest region of the point cloud. </p>
<dl class="section note"><dt>注解</dt><dd>you shouldn't call this method on unorganized point clouds! </dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">row_start</td><td>the offset on rows </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">col_start</td><td>the offset on columns </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nb_rows</td><td>the number of rows to be considered row_start included </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nb_cols</td><td>the number of columns to be considered col_start included </td></tr>
  </table>
  </dd>
</dl>

<p>重载 <a class="el" href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">pcl::PCLBase&lt; PointT &gt;</a> .</p>
<div class="fragment"><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;      {</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        <a class="code" href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">Base::setIndices</a> (row_start, col_start, nb_rows, nb_cols);</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;        compute_done_ = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;      }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a1952d7101f3942bac3b69ed55c1ca7ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1952d7101f3942bac3b69ed55c1ca7ea">&#9670;&nbsp;</a></span>setInputCloud() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setInputCloud</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Provide a pointer to the input dataset </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the const boost shared pointer to a <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a> message </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;{ </div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;  <a class="code" href="classpcl_1_1_p_c_a.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a> = cloud; </div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="aca4254c3969ff8cd2213d90cf30e95b3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca4254c3969ff8cd2213d90cf30e95b3">&#9670;&nbsp;</a></span>setInputCloud() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::setInputCloud </td>
          <td>(</td>
          <td class="paramtype">const PointCloudConstPtr &amp;&#160;</td>
          <td class="paramname"><em>cloud</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provide a pointer to the input dataset </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">cloud</td><td>the const boost shared pointer to a <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a> message </td></tr>
  </table>
  </dd>
</dl>

<p>重载 <a class="el" href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">pcl::PCLBase&lt; PointT &gt;</a> .</p>
<div class="fragment"><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;      { </div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        <a class="code" href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">Base::setInputCloud</a> (cloud);</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        compute_done_ = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_a1952d7101f3942bac3b69ed55c1ca7ea"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">pcl::PCLBase::setInputCloud</a></div><div class="ttdeci">virtual void setInputCloud(const PointCloudConstPtr &amp;cloud)</div><div class="ttdoc">Provide a pointer to the input dataset</div><div class="ttdef"><b>Definition:</b> pcl_base.hpp:66</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a37bab033d160cd2bb6f884b6970ba6b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37bab033d160cd2bb6f884b6970ba6b8">&#9670;&nbsp;</a></span>update()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_p_c_a.html">pcl::PCA</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::update </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_p_c_a.html#a1bd3197d4c429c7cba4adea98602c66c">FLAG</a>&#160;</td>
          <td class="paramname"><em>flag</em> = <code><a class="el" href="classpcl_1_1_p_c_a.html#a1bd3197d4c429c7cba4adea98602c66ca1e6a3535f703ae9d2b1e689c290acd38">preserve</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>update <a class="el" href="classpcl_1_1_p_c_a.html">PCA</a> with a new point </p><dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>input point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flag</td><td>update flag </td></tr>
  </table>
  </dd>
</dl>
<dl class="exception"><dt>异常</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classpcl_1_1_init_failed_exception.html" title="An exception thrown when init can not be performed should be used in all the PCLBase class inheritant...">InitFailedException</a></td><td></td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;{</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  <span class="keywordflow">if</span> (!compute_done_)</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    initCompute ();</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  <span class="keywordflow">if</span> (!compute_done_)</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    PCL_THROW_EXCEPTION (InitFailedException, <span class="stringliteral">&quot;[pcl::PCA::update] PCA initCompute failed&quot;</span>);</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  Eigen::Vector3f input (input_point.x, input_point.y, input_point.z);</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">size_t</span> n = eigenvectors_.cols ();<span class="comment">// number of eigen vectors</span></div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;  Eigen::VectorXf meanp = (float(n) * (mean_.head&lt;3&gt;() + input)) / <span class="keywordtype">float</span>(n + 1);</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  Eigen::VectorXf a = eigenvectors_.transpose() * (input - mean_.head&lt;3&gt;());</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  Eigen::VectorXf y = (eigenvectors_ * a) + mean_.head&lt;3&gt;();</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  Eigen::VectorXf h = y - input;</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  <span class="keywordflow">if</span> (h.norm() &gt; 0) </div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    h.normalize ();</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    h.setZero ();</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <span class="keywordtype">float</span> gamma = h.dot(input - mean_.head&lt;3&gt;());</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  Eigen::MatrixXf D = Eigen::MatrixXf::Zero (a.size() + 1, a.size() + 1);</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  D.block(0,0,n,n) = a * a.transpose();</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  D /=  float(n)/float((n+1) * (n+1));</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  <span class="keywordflow">for</span>(std::size_t i=0; i &lt; a.size(); i++) {</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    D(i,i)+= float(n)/float(n+1)*eigenvalues_(i);</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    D(D.rows()-1,i) = float(n) / float((n+1) * (n+1)) * gamma * a(i);</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    D(i,D.cols()-1) = D(D.rows()-1,i);</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    D(D.rows()-1,D.cols()-1) = float(n)/float((n+1) * (n+1)) * gamma * gamma;</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  }</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  Eigen::MatrixXf R(D.rows(), D.cols());</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  Eigen::EigenSolver&lt;Eigen::MatrixXf&gt; D_evd (D, <span class="keyword">false</span>);</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  Eigen::VectorXf alphap = D_evd.eigenvalues().real();</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  eigenvalues_.resize(eigenvalues_.size() +1);</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="keywordflow">for</span>(std::size_t i=0;i&lt;eigenvalues_.size();i++) {</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    eigenvalues_(i) = alphap(eigenvalues_.size()-i-1);</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    R.col(i) = D.col(D.cols()-i-1);</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  }</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  Eigen::MatrixXf Up = Eigen::MatrixXf::Zero(eigenvectors_.rows(), eigenvectors_.cols()+1);</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  Up.topLeftCorner(eigenvectors_.rows(),eigenvectors_.cols()) = eigenvectors_;</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  Up.rightCols&lt;1&gt;() = h;</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  eigenvectors_ = Up*R;</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <span class="keywordflow">if</span> (!basis_only_) {</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    Eigen::Vector3f etha = Up.transpose() * (mean_.head&lt;3&gt;() - meanp);</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    coefficients_.resize(coefficients_.rows()+1,coefficients_.cols()+1);</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="keywordflow">for</span>(std::size_t i=0; i &lt; (coefficients_.cols() - 1); i++) {</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      coefficients_(coefficients_.rows()-1,i) = 0;</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;      coefficients_.col(i) = (R.transpose() * coefficients_.col(i)) + etha;</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    }</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    a.resize(a.size()+1);</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    a(a.size()-1) = 0;</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    coefficients_.col(coefficients_.cols()-1) = (R.transpose() * a) + etha;</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  }</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;  mean_.head&lt;3&gt;() = meanp;</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;  <span class="keywordflow">switch</span> (flag) </div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;  {</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classpcl_1_1_p_c_a.html#a1bd3197d4c429c7cba4adea98602c66ca8cd62ecad342aa4f3b6c52e8cf008bed">increase</a>:</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;      <span class="keywordflow">if</span> (eigenvectors_.rows() &gt;= eigenvectors_.cols())</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <span class="keywordflow">case</span> <a class="code" href="classpcl_1_1_p_c_a.html#a1bd3197d4c429c7cba4adea98602c66ca1e6a3535f703ae9d2b1e689c290acd38">preserve</a>:</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;      <span class="keywordflow">if</span> (!basis_only_)</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;        coefficients_ = coefficients_.topRows(coefficients_.rows() - 1);</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;      eigenvectors_ = eigenvectors_.leftCols(eigenvectors_.cols() - 1);</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;      eigenvalues_.resize(eigenvalues_.size()-1);</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;      <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;      PCL_ERROR(<span class="stringliteral">&quot;[pcl::PCA] unknown flag\n&quot;</span>);</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  }</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>common/include/pcl/common/<a class="el" href="pca_8h_source.html">pca.h</a></li>
<li>common/include/pcl/common/impl/<a class="el" href="pca_8hpp_source.html">pca.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><a class="el" href="classpcl_1_1_p_c_a.html">PCA</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
